C1FlexGrid在WPF平台下的延迟滚动

在WPF平台下,C1FlexGrid控件在默认的情况下,拖动滚动条的时候,可视区域会同步滚动。然而,当gird表格包含大量的行,滚动会变得有点慢。C1FlexGrid的默认行为是实时滚动,当拖动滚动条的时候,可以看到内容同步移动。然而,同步滚动需要消耗大量内存,这在有时就会感到卡顿的现象。在这种情况下,C1FlexGrid提供了一个属性deferred scrolling(延迟滚动)。延迟滚动是指另外一种滚动行为,当鼠标释放的时候才会滚动内容(这个和Outlook 2007收件箱类似)。通过设置DeferScrolling可以实现C1FlexGrid的延迟滚动。它的枚举值如下所示:1。None-不使用延迟滚动。2。DeferVertical-竖直方向延迟滚动。3。DeferHorizontal -水平方向延迟滚动。4。DeferBoth -两个方向都延迟滚动。

发布于 2014/11/15 00:00

ComponentOne Enterprise

在WPF平台下,C1FlexGrid控件在默认的情况下,拖动滚动条的时候,可视区域会同步滚动。然而,当gird表格包含大量的行,滚动会变得有点慢。

C1FlexGrid的默认行为是实时滚动,当拖动滚动条的时候,可以看到内容同步移动。然而,同步滚动需要消耗大量内存,这在有时就会感到卡顿的现象。在这种情况下,C1FlexGrid提供了一个属性deferred scrolling(延迟滚动)。延迟滚动是指另外一种滚动行为,当鼠标释放的时候才会滚动内容(这个和Outlook 2007收件箱类似)。

通过设置DeferScrolling可以实现C1FlexGrid的延迟滚动。它的枚举值如下所示:

1。None-不使用延迟滚动。

2。DeferVertical-竖直方向延迟滚动。

3。DeferHorizontal -水平方向延迟滚动。

4。DeferBoth -两个方向都延迟滚动。

 

如下是语法:

C#:

public DeferScrolling DeferScrolling { get; set; }

VB:

Public Property DeferScrolling As DeferScrolling
Get
Set

 

同时,当用户在延迟滚动模式拖拽滚动条,表格触发ScrollingDeferred事件。你可以在滚动延迟操作的时候使用这个获得反馈。

具体的可以参考附件的Sample。在C1FlexGrid上放置一个C1ComboBox作为选项。

如下是XAML代码:

<Grid Background=”AliceBlue”>
<grid.rowdefinitions>
<rowdefinition height="20" />
<rowdefinition height="Auto" />
<rowdefinition height="20" />
<rowdefinition height="Auto" />  
</grid.rowdefinitions>
  <stackpanel orientation="Horizontal" grid.row="1" />
  <textblock text="DeferScrolling : " padding="10,3,10,0" /> 
  <c1:c1combobox text="DeferBoth" width="150" iseditable="False" selecteditemchanged="C1ComboBox_SelectedItemChanged"/>
<c1:c1comboboxitem content="DeferBoth" istabstop="False" />
<c1:c1comboboxitem content="DeferHorizontal" istabstop="False" />
<c1:c1comboboxitem content="DeferVertical" istabstop="False" />
<c1:c1comboboxitem content="None" istabstop="False" /> 
</c1:c1combobox> 
</stackpanel>  
<c1:c1flexgrid height="380" grid.row="3" width="550" name="c1FlexGrid1" deferscrolling="DeferBoth" />
</grid>

 

C#代码如下:

 

// Change DeferScroll mode as per selection in ComboBox
private void C1ComboBox_SelectedItemChanged(object sender, C1.WPF.PropertyChangedEventArgs<object> e)
{
  var _flex = this.c1FlexGrid1;
  string _deferScroll;
  if (e.NewValue.GetType() == typeof(string))
  {
      _deferScroll = e.NewValue.ToString();
  }
  else
  {
     _deferScroll = (((System.Windows.Controls.ContentControl)
     (e.NewValue))).Content.ToString();
  }
  if (_flex != null)
  {
     switch (_deferScroll)
     {
        case "None":
        _flex.DeferScrolling = C1.WPF.FlexGrid.DeferScrolling.None;
        break;
        case "DeferBoth":
        _flex.DeferScrolling = C1.WPF.FlexGrid.DeferScrolling.DeferBoth;
        break;
        case "DeferHorizontal":
        _flex.DeferScrolling = C1.WPF.FlexGrid.DeferScrolling.DeferHorizontal;
        break;
        case "DeferVertical":
        _flex.DeferScrolling = C1.WPF.FlexGrid.DeferScrolling.DeferVertical;
        break;
     }
  }
}

运行效果如下所示,从ComboBox下拉框选择可以改变这个属性:

screenshot1

本文演示所用的Demo如下:

DeferredScrollingVB.zip (47.31 kb)

 

如果你对C1FlexGrid感兴趣,请到我们的官网下载最新版本:/developer/componentone-wpf

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-138.html

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态